package com.leyou.getway.redis;

import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

//SpringCloudGateway中给桶信息存入Redis时需要有一个KEY来标记，key的生成规则定义在KeyResolver接口中
public interface KeyResolver {
    Mono<String> resolve(ServerWebExchange exchange);
}

//三种生成令牌桶的格式
//- 给不同的请求URI路径设置不同令牌桶，示例代码：
//        return Mono.just(exchange.getRequest().getURI().getPath());// 获取请求URI
//        - 给不同的登录用户设置不同令牌桶
//        return exchange.getPrincipal().map(Principal::getName);// 获取用户
//        - 给不同的请求IP地址设置不同令牌桶
//        return Mono.just(exchange.getRequest().getRemoteAddress().getHostName());// 获取请求者IP
//
//        这里我们选择最后一种，使用IP地址的令牌桶key。
